home *** CD-ROM | disk | FTP | other *** search
-
-
-
- BRK C Library Procedures BRK
-
-
-
- NNAAMMEE
- brk, sbrk - change data segment size
-
- SSYYNNOOPPSSIISS
- #include <sys/types.h>
-
- cchhaarr **bbrrkk((aaddddrr))
- cchhaarr **aaddddrr;;
-
- cchhaarr **ssbbrrkk((iinnccrr))
- iinntt iinnccrr;;
-
- DDEESSCCRRIIPPTTIIOONN
- _B_r_k sets the system's idea of the lowest data segment loca-
- tion not used by the program (called the break) to _a_d_d_r
- (rounded up to the next multiple of the system's page size).
- Locations greater than _a_d_d_r and below the stack pointer are
- not in the address space and will thus cause a memory viola-
- tion if accessed.
-
- In the alternate function _s_b_r_k, _i_n_c_r more bytes are added to
- the program's data space and a pointer to the start of the
- new area is returned.
-
- When a program begins execution via _e_x_e_c_v_e the break is set
- at the highest location defined by the program and data
- storage areas. Ordinarily, therefore, only programs with
- growing data areas need to use _s_b_r_k.
-
- The current value of the program break is reliably returned
- by ``sbrk(0)'' (see also _e_n_d(3)). The _g_e_t_r_l_i_m_i_t(2) system
- call may be used to determine the maximum permissible size
- of the _d_a_t_a segment; it will not be possible to set the
- break beyond the _r_l_i_m__m_a_x value returned from a call to
- _g_e_t_r_l_i_m_i_t, e.g. "etext + rlp->rlim_max." (see _e_n_d(3) for the
- definition of _e_t_e_x_t).
-
- RREETTUURRNN VVAALLUUEE
- Zero is returned if the _b_r_k could be set; -1 if the program
- requests more memory than the system limit. _S_b_r_k returns -1
- if the break could not be set.
-
- EERRRROORRSS
- _S_b_r_k will fail and no additional memory will be allocated if
- one of the following are true:
-
- [ENOMEM] The limit, as set by _s_e_t_r_l_i_m_i_t(2), was
- exceeded.
-
- [ENOMEM] The maximum possible size of a data segment
- (compiled into the system) was exceeded.
-
-
-
-
- Sprite v1.0 June 17, 1986 1
-
-
-
-
-
-
- BRK C Library Procedures BRK
-
-
-
- [ENOMEM] Insufficient space existed in the swap area
- to support the expansion.
-
- SSEEEE AALLSSOO
- execve(2), getrlimit(2), malloc(3), end(3)
-
- BBUUGGSS
- Setting the break may fail due to a temporary lack of swap
- space. It is not possible to distinguish this from a
- failure caused by exceeding the maximum size of the data
- segment without consulting _g_e_t_r_l_i_m_i_t.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Sprite v1.0 June 17, 1986 2
-
-
-
-